
package com.hlkj.pay.service.merchant;
/*
 * Hlpay-Plus aggregate payment system.
 * Copyright (c) 2024-2025 Hlpay Team Copyright has the right of final interpretation.
 */

import com.hlkj.framework.common.pojo.PageResult;
import com.hlkj.pay.dto.merchant.*;
import com.hlkj.pay.enums.MerchantEnum;
import com.hlkj.pay.infrastructure.model.merchant.MerchantAccessInfoDO;

import java.util.List;

/**
 * @author HlpayTeam
 * @date 2024/09/25 13:33
 */
public interface IMerchantAccessService {

    /**
     * 保存进件信息
     * 
     * @param merchantAccessInfoPageQueryDto
     */
    PageResult<MerchantAccessInfoPageDto> queryPage(MerchantAccessInfoPageQueryDto merchantAccessInfoPageQueryDto);

    /**
     * 保存进件信息
     *
     * @param merchantAccessInfoPageQueryDto
     */
    List<MerchantAccessInfoDO> queryList(MerchantAccessInfoPageQueryDto merchantAccessInfoPageQueryDto);

    /**
     * 保存进件信息
     * 
     * @param merchantAccessDto
     */
    Long saveAccess(MerchantAccessDto merchantAccessDto);

    /**
     * 保存进件信息
     * 
     * @param merchantAccessDto
     */
    Long updateAccess(MerchantAccessDto merchantAccessDto);

    /**
     * 查询进件信息
     * 
     * @param id
     * @return
     */
    MerchantAccessDto domainDetail(Long id);

    /**
     * 查询进件信息
     * 
     * @param id
     * @return
     */
    MerchantAccessInfoDO detail(Long id);

    /**
     * 查询进件信息
     * 
     * @param requestId
     * @return
     */
    MerchantAccessInfoDO queryByRequestId(String requestId);

    /**
     * 更新进件状态
     * 
     * @param id
     * @param accessStatus
     * @return
     */
    void updateStatus(Long id, MerchantEnum.ACCESS_STATUS accessStatus, String message);

    /**
     * 更新进件状态
     * 
     * @param merchantAccessInfoDO
     * @return
     */
    void updateAccessInfo(MerchantAccessInfoDO merchantAccessInfoDO, List<MerchantAccessSignLink> signLinks);


    void updateSignlinks(Long id, List<MerchantAccessSignLink> signLinks);

    /**
     * 渠道回调
     * 
     * @param merchantAccessCallDto
     * @return
     */
    void chanelCall(MerchantAccessCallDto merchantAccessCallDto);

    /**
     *
     * @param id
     */
    void delete(Long id);

    MerchantAccessInfoDO queryByMchOrderNo(String sn, String mchOrderNo);

    /**
     *
     * @param requestId
     * @return
     */
    MerchantAccessDto domainDetailByRequestId(String requestId);

    MerchantAccessInfoDO queryBySubMchId(String subMchId);

}
